#pragma once

#include<vector>

namespace {
	class AbstractGraph{
	private:
		int vertexNum_;
		int edgesNum_;
	public:
		void setVertexNum(int newVertexNum){
			vertexNum_ = newVertexNum;
		}
		void setEdgesNum(int newEdgesNum){
			edgesNum_ = newEdgesNum;
		}
		int getVertexNum(){
			return vertexNum_;
		}
		int getEdgesNum(){
			return edgesNum_;
		}
		virtual void readGraph(int vertexNum, int edgesNum, const std::vector<std::pair<int, int> >& edgesList) = 0;
		virtual std::vector<int> getAdjacentList(int inputVertex) = 0;
		virtual ~AbstractGraph(){}
	};

}

